home *** CD-ROM | disk | FTP | other *** search
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ File Name: Parasite.a Ñ
- ;Ñ ---------- Ñ
- ;Ñ Ñ
- ;Ñ Copyright ⌐ 1989 Apple Computer, Inc. All Rights Reserved Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ This file contains the assembly language routines of the SLUDGE Ñ
- ;Ñ parasite. Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
-
-
- INCLUDE 'traps.a'
- INCLUDE 'ToolEqu.a'
- EXPORT ATRAP_EX:CODE
- EXPORT TAKE_A_TRAP_EXCEPTION_VECTOR:CODE
- EXPORT TAKE_JUMP_TRACE_VECTOR:CODE
- IMPORT HLL_ATRAP_EX:CODE
- EXPORT MASTER_A_TRAP:CODE
- EXPORT GET_MASTER_A_TRAP_HANDLE:CODE
- EXPORT GET_SAVED_A_TRAP_VECTOR:CODE
- EXPORT SET_JUMP_TRACE_BIT:CODE
- EXPORT CLEAR_JUMP_TRACE_BIT:CODE
- SEG 'NUGG'
-
-
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Identifier: MASTER_SLUDGE Ñ
- ;Ñ ----------- Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ This function is never executed. It is a place for a DC.L that Ñ
- ;Ñ contains the current SLUDGE factor. There are access routines for Ñ
- ;Ñ this DC.L later in this file. Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- MASTER_SLUDGE PROC
- Jmp skipper
- DC.L 0
- skipper Pea #'How dare you disturb the sludge MASTER! Use the g command NOW!'
- _DebugStr
- RTS
- ENDPROC
-
-
-
-
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Identifier: GET_SAVED_SLUDGE_FACTOR Ñ
- ;Ñ ----------- Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ This function returns the current SLUDGE factor in register D0. Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- GET_SAVED_SLUDGE_FACTOR PROC
- Move.L A0,-(A7)
- Lea MASTER_SLUDGE,A0
- AddQ.L #4,A0
- Move.L (A0),D0
- Move.L (A7)+,A0
- RTS
- ENDPROC
-
-
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Identifier: ATRAP_EX Ñ
- ;Ñ ----------- Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ This proc is executed at each a-trap exception. SLUDGE needs Ñ
- ;Ñ control here because the exception turns off the jump-trace bit Ñ
- ;Ñ and SLUDGE needs to turn it back on. So SLUDGE turns it back on Ñ
- ;Ñ and jumps to the system a-trap dispatcher. Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- ATRAP_EX PROC
- Pea #0
- MoveM.L A0-A7/D0-D7,-(A7)
- Link A6,#0
- Move.L A6,-(SP)
- Pea 72(A6) ; pass the address of the stack frame
- Move.L A0,-(A7)
- Jsr HLL_ATRAP_EX
- MoveA.L 8(SP),A6
- Move.L D0,68(A6) ; the address of the system a-trap dispatcher will be on the top of the stack
- Unlk A6
- MoveM.L (A7)+,A0-A7/D0-D7
- Ori.W #$4000,SR ; set jump trace bit
- RTS
- ENDPROC
-
-
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Identifier: JTRACE_EX Ñ
- ;Ñ ----------- Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ This proc is executed at each jump trace exception. It simply Ñ
- ;Ñ executes a tight loop the number of times specified by the current Ñ
- ;Ñ SLUDGE factor. Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- JTRACE_EX PROC
- Move.L D0,-(A7)
- JSR GET_SAVED_SLUDGE_FACTOR
- back DBF D0,back ; loop here
- Move.L (A7)+,D0
- OrI.W #$4000,(A7) ; set jump trace bit in stacked status register
- RTE
- ENDPROC
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Function Name Ñ
- ;Ñ ------------- Ñ
- ;Ñ TAKE_A_TRAP_EXCEPTION_VECTOR Ñ
- ;Ñ Ñ
- ;Ñ Purpose Ñ
- ;Ñ ------- Ñ
- ;Ñ This PROC will replace the a-trap exception vector with address of the Ñ
- ;Ñ ATRAP_EX PROC Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;Ñ Modification History Ñ
- ;Ñ -------------------- Ñ
- ;Ñ Ñ
- ;Ñ Name Date Change Ñ
- ;Ñ ---- ---- ------ Ñ
- ;Ñ Kevin McEntee 9/21/88 Original implementation Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- TAKE_A_TRAP_EXCEPTION_VECTOR PROC
- Move.L A0,-(A7)
- Move.L A1,-(A7)
- MoveA.L #$28,A0 ; A0 -> A-trap exception vector
- Lea ATRAP_EX,A1 ; A1 -> my exception handler
- Move.L A1,(A0) ; replace existing exception vector
- MoveA.L (A7)+,A1
- MoveA.L (A7)+,A0
- RTS
- ENDPROC
-
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Identifier: TAKE_JUMP_TRACE_VECTOR Ñ
- ;Ñ ----------- Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ This proc accepts a SLUDGE factor as a parameter and saves it as Ñ
- ;Ñ current SLUDGE factor and sets the jump-trace exception vector to Ñ
- ;Ñ to JTRACE_EX. Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- TAKE_JUMP_TRACE_VECTOR PROC
- ;
- Move.L A0,-(A7)
- Move.L A1,-(A7)
- Move.L D0,-(A7)
- Lea MASTER_SLUDGE,A0
- AddQ.L #4,A0
- Move.L 16(SP),D0
- Move.L D0,(A0) ; save current SLUDGE factor
- ;
- MoveA.L #$24,A0 ; A0 -> trace exception vector
- Lea JTRACE_EX,A1 ; A1 -> my exception handler
- Move.L A1,(A0) ; replace existing exception vector
- ;
- ; ; put RA on top of stack
- MoveA.L 12(SP),A1
- Move.L A1,16(SP)
- ;
- Move.L (A7)+,D0
- MoveA.L (A7)+,A1
- MoveA.L (A7)+,A0
- AddA.L #4,A7
- RTS
- ENDPROC
-
-
-
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Identifier: MASTER_A_TRAP Ñ
- ;Ñ ----------- Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ This function is never executed. It is a place for a DC.L that Ñ
- ;Ñ contains the system value for the a-trap exception vector. There Ñ
- ;Ñ are access routines for this DC.L later in this file. Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- MASTER_A_TRAP PROC
- Jmp around
- DC.L 0
- around Pea #'How dare you disturb the a_trap MASTER! Use the g command NOW!'
- _DebugStr
- RTS
- ENDPROC
-
-
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Identifier: GET_MASTER_A_TRAP_HANDLE Ñ
- ;Ñ ----------- Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ This returns the address of the DC.L of the MASTER_A_TRAP in Ñ
- ;Ñ register D0. Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- GET_MASTER_A_TRAP_HANDLE PROC
- Move.L A0,-(A7)
- Lea MASTER_A_TRAP,A0
- Move.L A0,D0
- AddQ.L #4,D0
- Move.L (A7)+,A0
- RTS
- ENDPROC
-
-
-
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Identifier: GET_SAVED_A_TRAP_VECTOR Ñ
- ;Ñ ----------- Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ This returns the saved a-trap execption vector in register DO. Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- GET_SAVED_A_TRAP_VECTOR PROC
- Move.L A0,-(A7)
- Lea MASTER_A_TRAP,A0
- AddQ.L #4,A0
- Move.L (A0),D0
- Move.L (A7)+,A0
- RTS
- ENDPROC
-
-
-
-
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
- ;Ñ Ñ
- ;Ñ Identifier: SET_JUMP_TRACE_BIT and CLEAR_JUMP_TRACE_BIT Ñ
- ;Ñ ----------- Ñ
- ;Ñ Ñ
- ;Ñ Description Ñ
- ;Ñ ----------- Ñ
- ;Ñ These procs set and clear the jump-trace bit of the status register.Ñ
- ;Ñ Ñ
- ;Ñ History Ñ
- ;Ñ ------- Ñ
- ;Ñ Ñ
- ;Ñ Author Date Description Ñ
- ;Ñ ------------------------------------------------------------------ Ñ
- ;Ñ Kevin McEntee 2/20/90 Original Implementation Ñ
- ;Ñ Ñ
- ;Ñ Ñ
- ;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ*/
- SET_JUMP_TRACE_BIT PROC
- Ori.w #$4000,SR
- RTS
- ENDPROC
-
- CLEAR_JUMP_TRACE_BIT PROC
- Andi.w #$BFFF,SR
- RTS
- ENDPROC
-
- END
-